// author: shelman
// description：汇集了文件操作的接口
#pragma once

#include <cstdint>
#include <string>
#include <vector>
#include <stdlib.h>
#include <stdio.h>
#include "export_def.h"


// 文件概要信息
struct FileAbsInfo
{
    std::string strName = ""; // 文件名
    std::string strPath = ""; // 文件全路径
};


/******************************************************************
 * 功能：创建文件夹
 * 输入参数：
 *      strFolderPath：文件夹全路径
 * 返回值：
 *      bool：创建结果，true - 成功，false - 失败
 * ****************************************************************/
API_EXPORT_DECL bool createDirectory(const std::string& strFolderPath);

/******************************************************************
 * 功能：删除文件夹
 * 输入参数：
 *      strFolderPath：文件夹全路径
 * ****************************************************************/
API_EXPORT_DECL void deleteDirectory(const std::string& strFolderPath);

/******************************************************************
 * 功能：创建文件
 * 输入参数：
 *      strFilePath：文件全路径
 * 返回值：
 *      bool：创建结果，true - 成功，false - 失败
 * ****************************************************************/
API_EXPORT_DECL bool createFile(const std::string& strFilePath);

/******************************************************************
 * 功能：删除文件
 * 输入参数：
 *      strFilePath：文件全路径
 * ****************************************************************/
API_EXPORT_DECL void deleteFile(const std::string& strFilePath);

/******************************************************************
 * 功能：遍历文件夹下所有文件信息，暂不支持多级目录
 * 输入参数：
 *      strFileFolder：文件夹全路径
 * 输出参数：
 *      std::vector：文件信息集合
 * ****************************************************************/
API_EXPORT_DECL void getFilePaths(const std::string &strFileFolder, std::vector<FileAbsInfo>& vtFileInfos);

/******************************************************************
 * 功能：内容追加入文件
 * 输入参数：
 *      strFilePath：文件全路径
 *      strContent：加入的文件内容
 * ****************************************************************/
API_EXPORT_DECL void appendFile(const std::string& strFilePath, const std::string& strContent);

/******************************************************************
 * 功能：内容写入文件，文件没有时自动创建
 * 输入参数：
 *      strFilePath：文件全路径
 *      strContent：写入的文件内容
 * ****************************************************************/
API_EXPORT_DECL void writeFile(const std::string& strFilePath, const std::string& strContent);

/******************************************************************
 * 功能：读出文件内容
 * 输入参数：
 *      strFilePath：文件全路径
 * 输出参数：
 *      strContent：文件内容
 * ****************************************************************/
API_EXPORT_DECL void readFile(const std::string& strFilePath, std::string& strContent);


